'''
使用python-requests包进行接口测试
单接口的测试：
1.构造参数
2.发送请求
3.校验结果
'''

# 加载包
import requests

# 百度搜索的接口，搜索的内容为requests
url = "http://www.baidu.com/s?wd=request"
#发送请求，将服务返回的响应放到变量r中
r = requests.get(url)
# 打印文本格式的响应体
print(r.text)
# 对结果做断言，判断关键字在不在结果中
# assert "Requests - Python 的 HTTP 客户端库" in r.text

# 金融项目注册接口的测试
# get请求de参数拼接到url的后面，?key=value&key= value&key=value 的格式
url = "http://192.168.2.36:8089/futureloan/mvc/api/member/register?mobilephone=12345&pwd=12345"

r = requests.get(url)
print(r.text)
print(r.json()) # 如果响应体是json格式的，使用r.json()
print(r.json()['code']) #可以当做字典使用
assert r.json()['code'] == "20108"
assert r.json()['msg'] == "密码长度必须为6~18"

# get的请求参数，使用param传递
url = "http://192.168.2.36:8089/futureloan/mvc/api/member/register"
cs = {
    "mobilephone": "18012345678",
    "pwd": "12345",
    "regname": "hello"
}
# params不能写错，只能是requests中定义好的参数名
r = requests.get(url,params=cs)
print(r.text)
assert r.json()['code'] == "20108"
assert r.json()['msg'] =="密码长度必须为6~18"

print("状态码",r.status_code)
print("状态原因",r.reason)
print("响应头",r.headers)
print("cookies",r.cookies)
print("文本格式的响应体",r.text)
print("请求头",r.request.headers)


#新知天气查询天气的接口
url = "https://api.seniverse.com/v3/weather/now.json?key=Sh-LsrOsCyo4vp8Tp&location=xian&language=zh-Hans&unit=c"
r = requests.get(url)
print(r.json())
# 西安
print(r.json()['results'][0]['location']['name'], end='当前的温度：')
# 温度
print(r.json()['results'][0]['now']['temperature'])

#分割线
print("*"* 50)
# 获取用户列表
url = "http://192.168.2.36:8089/futureloan/mvc/api/member/list"
r = requests.get(url)
print(r.json())
print(r.request.headers) # 'User-Agent': 'python-requests/2.25.1'

#分割线
print("*"* 50)
# 设置User-Agent，位置成是浏览器发的请求
hds ={
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36"
}
r = requests.get(url,headers = hds)
print(r.json())
print(r.request.headers)
